import os
from urllib.request import urlretrieve
from PIL import Image, ImageTk
from tkinter import *
from tkinter import messagebox,ttk
from PIL import ImageTk
import requests
import re

def get_sign():
    startUrl = "http://www.uustv.com/"
    # 获取名字输入
    name = name_entry.get()
    style = numberChosen.current()  # 获取索引
    # 去空格
    name = name.strip()
    if name == "":
        messagebox.showinfo("提示", "请输入姓名。。。")
    else:
        font = {
            '0':'jfcs.ttf',# 个性签名
            '1':'qmt.ttf',# 连笔签名
            '2':'bzcs.ttf',# 潇洒签名
            '3':'lfc.ttf',# 草体签名
            '4':'haku.ttf',# 和文签名
            '5':'zql.ttf',# 商务签名
            '6':'yqk.ttf'# 可爱签名
        }
    # 获取字体选择
    font = combox_list.get()
    # 模拟网页发送数据
    data = {
        'word': name,
        'sizes': '60',
        'fonts': font[str(style)],
        'fontclor': '#000000'
    }
    # 字体选择列表
    map_list = {"艺术签": "901", "商务签": "904", "一笔签": "905"}
    # 网站地址
    result = requests.post(startUrl, data=data)
    result.encoding = "utf-8"
    html = result.text
    # 正则表达式
    reg = '<div class="tu"><img src="(.*?)"/></div>'
    imgPath = re.findall(reg, html)
    imgUrl = startUrl + imgPath[0]
    response = requests.get(imgUrl).content

    # 保存图片
    with open('{}.gif'.format(name), 'wb') as f:
        f.write(response)
    try:
        im = Image.open('{}.gif'.format(name))
        im.show()
    except:
        print("打不开！")



    # 返回当前工作目录
    now = os.getcwd()
    # 将目录和文件名合成一个路径
    now = os.path.join(now, '../name/自定义签名')
    # 目录不存在则创建目录
    if not os.path.exists(now):
        os.mkdir(now)
    # 切换到新创建的路径
    os.chdir(now)
    # 文件名
    file_name = name + '.jpg'


    # 打开签名图片
    img = Image.open(file_name)
    photo = ImageTk.PhotoImage(img)
    # 显示签名
    pic_label.config(image=photo)
    pic_label.image = photo


root = Tk()
# 标题
root.title("个性签名")
# logo
root.iconbitmap('logo.ico')
# 窗口大小、位置
root.geometry('800x600+380+100')
# 设置不可改变窗口大小
# root.resizable(False, False)

# 背景图片
bg_image = PhotoImage(file='../name/bg.png')
# 使用标签放置背景图片
bg_label = Label(root, image=bg_image)
# 放置背景图片
bg_label.place(relwidth=1, relheight=1)

# 上面边框
frame = Frame(root, bg='#edcc79', bd=5)
frame.place(relx=0.5, rely=0.1, relwidth=0.75, relheight=0.1, anchor='n')
# 输入签名
font_label = Label(frame, text='输入签名:', font=('华文行楷', 20), fg='black')
font_label.place(relwidth=0.25, relheight=1)
# 输入框
name_entry = Entry(frame, font=('华文行楷', 20))
name_entry.place(relx=0.25, relwidth=0.36, relheight=1)
# 选择列表
combox_list = ttk.Combobox(frame, textvariable=StringVar(), font=('华文行楷', 20))
combox_list.place(relx=0.63, relwidth=0.2, relheight=1)
combox_list["value"] = ("艺术签", "商务签", "一笔签")
combox_list.current(0)  # 默认选择第一个
# 按键
button = Button(frame, text='生成', font=('华文行楷', 20), command=get_sign)
button.place(relx=0.85, relwidth=0.15, relheight=1)
# 下面边框
lower_frame = Frame(root, bg='#edcc79', bd=10)
lower_frame.place(relx=0.5, rely=0.25, relwidth=0.75, relheight=0.6, anchor='n')
pic_label = Label(lower_frame)
pic_label.place(relwidth=1, relheight=1)

# 下拉列表
number = StringVar()
numberChosen = ttk.Combobox(root,width=10,font=('华文行楷',20),textvariable=number,state='readonly')
numberChosen['values']=('个性签','连笔签','潇洒签','草体签','合文签','商务签','可爱签')
numberChosen.grid(row=0,column=3)
numberChosen.current(0)

root.mainloop()